This specification relates to requesting fragments of a media stream.
Hypertext Transfer Protocol (HTTP) has become a standard protocol for Web communications. Consequently, technologies for optimizing HTTP delivery of content have been developed and have become available. Such optimized delivery has become widely accessible as it relies mostly on standard HTTP server systems that are widely supported in content delivery networks.
The basic principles of HTTP streaming involve using software on an origin server system of a content delivery network to split a media stream into small fragments (also referred to as segments or chunks) saved as separate files, and to create a playlist (e.g., a master list, fragment list, or media stream index) for informing a media player client which files to get to make up a complete media stream, and where the files are located (e.g., via uniform resource locators). The media player client can download the files and can play the small fragments included in the downloaded files in an order specified by the playlist.
In HTTP Dynamic Streaming (HDS), playback of a media stream should be as robust as possible taking into account possible server-side issues. Playback at the client can suffer from occurrences, such as “liveness” or “dropout”, regardless of the built-in backend redundancy of the server systems. Liveness can occur when a server system advertises an index (e.g., fragment list) of a media stream that is not current (e.g., a “stale” view of a live media stream), and dropout can occur, when a server system's index of a media stream has gaps (e.g., the index is missing a range of fragment identifiers).